import plugin from '../../lib/plugins/plugin.js'
import common from '../../lib/common/common.js'
import { XiuXianData } from './xiuxian_data.js'
import { XiuXianUtils } from './xiuxian_utils.js'

export class XiuXianCore extends plugin {
    constructor() {
        super({
            name: '修仙文游核心',
            dsc: '修仙游戏的核心功能',
            event: 'message',
            priority: 5000,
            rule: [
                { reg: '^修仙$', fnc: 'startGame' },
                { reg: '^查看状态$', fnc: 'checkStatus' },
                { reg: '^改名(.*)$', fnc: 'changeName' }
            ]
        })
        this.data = new XiuXianData()
        this.utils = new XiuXianUtils()
    }

    async startGame(e) {
        const userId = e.user_id;
        const gameCommands = [
            '1. 修炼 - 提升经验和恢复生命值',
            '2. 探索 - 获得物品和灵石',
            '3. 战斗 - 与怪物战斗获得经验',
            '4. 突破 - 提升境界',
            '5. 查看状态 - 查看当前属性',
            '6. 改名+新昵称 - 更改角色名称',
            '7. 商店 - 查看可购买的物品',
            '8. 购买+物品名 - 购买物品',
            '9. 使用+物品名 - 使用物品',
            '10. 查看任务 - 查看当前任务',
            '11. 完成任务+任务名 - 领取任务奖励',
            '12. 学习技能+技能名 - 学习新技能',
            '13. 查看技能 - 查看已学习的技能',
            '14. 创建宗门+宗门名 - 创建新的宗门',
            '15. 加入宗门+宗门名 - 加入已存在的宗门',
            '16. 查看宗门 - 查看当前宗门信息',
            '17. 宗门修炼 - 在宗门中进行修炼',
            '18. 宗门升级 - 升级宗门等级',
            '19. 排行榜 - 查看玩家排行榜'
        ].join('\n');

        const player = this.data.gameState[userId];
        const avatarUrl = `![图片 #20px #20px](https://q1.qlogo.cn/g?b=qq&s=0&nk=${userId})`;

        if (player) {
            return this.reply(await this.utils.markdown(e,
                `${avatarUrl}${player.name}，你已经开始了修仙之旅。\n***\n#可用指令\n\`\`\`text\n${gameCommands}\n\`\`\`\n请开始你的修仙之旅吧！输入对应的指令来进行操作。`,
                '修仙欢迎界面',
                true
            ));
        }

        this.data.gameState[userId] = this.utils.createNewPlayer();
        this.utils.saveJSON(this.data.paths.gameData, this.data.gameState);

        return this.reply(await this.utils.markdown(e,
            `${avatarUrl}欢迎进入修仙世界，${this.data.gameState[userId].name}！\n***\n#游戏指令\n\`\`\`text\n${gameCommands}\n\`\`\`\n请开始你的修仙之旅吧！输入对应的指令来进行操作。`,
            '修仙欢迎界面',
            true
        ));
    }

    async checkStatus(e) {
        const userId = e.user_id
        const player = this.data.gameState[userId]
        if (!player) return this.reply('请先输入"修仙"开始游戏')

        const statusText = this.utils.renderPlayerStatusText(player)
        const forwardMsg = await this.utils.markdown(e, statusText, '修仙状态')
        return this.reply(forwardMsg)
    }

    async changeName(e) {
        const userId = e.user_id
        const player = this.data.gameState[userId]
        if (!player) return this.reply('请先输入"修仙"开始游戏')

        const newName = e.msg.replace(/^改名/, '').trim()

        if (newName.length === 0 || newName.length > 9) {
            return this.reply('昵称长度必须在1-9个字符之间')
        }

        const oldName = player.name
        player.name = newName
        this.utils.saveJSON(this.data.paths.gameData, this.data.gameState)

        return this.reply(`${oldName}成功更名为${newName}`)
    }
}
